package com.sg.dto.integration.app;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @desc FieldDataDto
 * @使用场景
 */
@Data
public class FieldDataDto extends BaseDto implements Serializable {

    /**
     * 上一更新周期ID
     */
    @ApiModelProperty("上一更新周期ID")
    private String preUpdateCycleId;

    /**
     * 更新周期ID
     */
    @ApiModelProperty("更新周期ID")
    private String updateCycleId;

    /**
     * 更新周期开始时间
     */
    @ApiModelProperty("更新周期开始时间")
    private String updateCycleStartTime;

    /**
     * 更新周期结束时间
     */
    @ApiModelProperty("更新周期结束时间")
    private String updateCycleEndTime;

    /**
     * 更新周期类型标识
     */
    @ApiModelProperty("更新周期类型标识")
    private String updateCycleTypeCode;

    /**
     * 是否末级周期
     */
    @ApiModelProperty("是否末级周期")
    private String isLastCycle;

    /**
     * 父子中过程周期类型
     */
    @ApiModelProperty("父子中过程周期类型")
    private String parentSubMidCycleType;

    /**
     * 被评对象目标周期标识
     */
    @ApiModelProperty("被评对象目标周期标识")
    private String evaObjTargetCycleCode;

    /**
     * 上级被评对象目标周期标识
     */
    @ApiModelProperty("上级被评对象目标周期标识")
    private String parentEvaObjTargetCycleId;

    /**
     * 数据归属内容表主键ID
     */
    @ApiModelProperty("数据归属内容表主键ID")
    private String belongToContentId;

    /**
     * 被评对象内容表主键ID
     */
    @ApiModelProperty("被评对象内容表主键ID")
    private String evaObjEntityId;

    /**
     * 被评对象类型编码
     */
    @ApiModelProperty("被评对象类型编码")
    private String evaObjTypeCode;

    /**
     * 评价模板ID
     */
    @ApiModelProperty("评价模板ID")
    private String evaluationTemplateId;

    /**
     * 事务内数据更新批次标识
     */
    @ApiModelProperty("事务内数据更新批次标识")
    private String eventBatchUpdateCode;

    /**
     * 计算开始时间
     */
    @ApiModelProperty("计算开始时间")
    private String calcStartTime;

    /**
     * 目标得分单位
     */
    @ApiModelProperty("目标得分单位")
    private String targetScoreUnit;

    /**
     * 数据计算正常与异常场景
     */
    @ApiModelProperty("数据计算正常与异常场景")
    private String dataCalcNormalAbnormal;

    /**
     * 被评对象目标周期ID
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String evaObjTargetCycleId;

    /**
     * 关联归属主体标识
     */
    @ApiModelProperty("关联归属主体标识")
    private String accountContentCode;

    /**
     * 是否开启资金到账
     */
    @ApiModelProperty("是否开启资金到账")
    private String isOpenFundsArrival;

    /**
     * 周期模式
     */
    @ApiModelProperty("周期模式")
    private String cycleMode;

    /**
     * 操作人就职记录ID
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;

    /**
     * 空间ID
     */
    @ApiModelProperty("空间ID")
    private String spaceId;

    /**
     * 冗余单位
     */
    @ApiModelProperty("冗余单位")
    private String unit;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        FieldDataDto that = (FieldDataDto) o;
        return (
                preUpdateCycleId == that.preUpdateCycleId &&
                        updateCycleId == that.updateCycleId &&
                        updateCycleStartTime == that.updateCycleStartTime &&
                        updateCycleEndTime == that.updateCycleEndTime &&
                        updateCycleTypeCode == that.updateCycleTypeCode &&
                        isLastCycle == that.isLastCycle &&
                        parentSubMidCycleType == that.parentSubMidCycleType &&
                        evaObjTargetCycleCode == that.evaObjTargetCycleCode &&
                        parentEvaObjTargetCycleId == that.parentEvaObjTargetCycleId &&
                        belongToContentId == that.belongToContentId &&
                        evaObjEntityId == that.evaObjEntityId &&
                        evaObjTypeCode == that.evaObjTypeCode &&
                        evaluationTemplateId == that.evaluationTemplateId &&
                        eventBatchUpdateCode == that.eventBatchUpdateCode &&
                        calcStartTime == that.calcStartTime &&
                        targetScoreUnit == that.targetScoreUnit &&
                        dataCalcNormalAbnormal == that.dataCalcNormalAbnormal &&
                        evaObjTargetCycleId == that.evaObjTargetCycleId &&
                        accountContentCode == that.accountContentCode &&
                        isOpenFundsArrival == that.isOpenFundsArrival &&
                        cycleMode == that.cycleMode &&
                        operationInductionId == that.operationInductionId &&
                        spaceId == that.spaceId &&
                        unit == that.unit
        );
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                super.hashCode(),
                preUpdateCycleId,
                updateCycleId,
                updateCycleStartTime,
                updateCycleEndTime,
                updateCycleTypeCode,
                isLastCycle,
                parentSubMidCycleType,
                evaObjTargetCycleCode,
                parentEvaObjTargetCycleId,
                belongToContentId,
                evaObjEntityId,
                evaObjTypeCode,
                evaluationTemplateId,
                eventBatchUpdateCode,
                calcStartTime,
                targetScoreUnit,
                dataCalcNormalAbnormal,
                evaObjTargetCycleId,
                accountContentCode,
                isOpenFundsArrival,
                cycleMode,
                operationInductionId,
                spaceId,
                unit
        );
    }

}
